Component({
    /**
     * 组件的属性列表
     */
    properties: {
        show: Boolean,
        title: {
            type: String,
            value: '加入购物车'
        },
        goods: Object,
    },
    /**
     * 组件的初始数据
     */
    data: {
        addCartNum: 1,
        addCartTotalPrice: 0,
        buttonLoading: false,
    },
    pageObj: null,
    addCartTimeId: '',
    /**
     * 组件的生命周期
     */
    lifetimes: {
        // 在组件实例进入页面节点树时执行
        attached: function() {
            try {
                const pages = getCurrentPages()
                this.pageObj = pages[pages.length - 1]
            } catch (error) {}
        },
    },
    observers: {
        'goods': function(newValue) {
            if (newValue && newValue.product_price) {
                this.setData({
                    addCartNum: 1,
                    addCartTotalPrice: newValue.product_price
                })
            }
        },
    },
    /**
     * 组件的方法列表
     */
    methods: {
        close() {
            this.pageObj.setData({
                showAddCartPopup: false
            })
        },
        add() {
            this.setData({ buttonLoading: true })
            this.pageObj.request({
                url: '/api/cart/addToCart',
                method: 'POST',
                data: { product_id: this.data.goods.product_id, nums: this.data.addCartNum }
            }, () => {
                wx.showToast({
                    title: '加入购物车成功',
                    icon: 'success'
                })
                this.close()

                let cartCheckNum = getApp().globalData.cartCheckNum
                cartCheckNum += this.data.addCartNum
                getApp().globalData.cartCheckNum = cartCheckNum

            }, null, () => { this.setData({ buttonLoading: false }) })
        },
        //加入购物车数量变化计算价格
        computerPrice({ detail }) {
            this.setData({ addCartNum: detail })
            clearTimeout(this.addCartTimeId)
            this.addCartTimeId = setTimeout(() => {
                this.setData({ addCartTotalPrice: Number((detail * this.data.goods.product_price).toFixed(2)) })
                clearTimeout(this.addCartTimeId)
            }, 200)
        },
    }
})